package com.sangeng.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.sangeng.domain.ResponseResult;
import com.sangeng.domain.dto.RoleAddDto;
import com.sangeng.domain.dto.RoleDto;
import com.sangeng.domain.dto.RoleUpdateDto;
import com.sangeng.domain.entity.Role;
import com.sangeng.domain.vo.PageVo;
import com.sangeng.domain.vo.RoleUpdateVo;

import java.util.List;


/**
 * 角色信息表(Role)表服务接口
 *
 * @author makejava
 * @since 2023-10-09 20:26:38
 */
public interface RoleService extends IService<Role> {


    /**
     * 根据用户id查询用户角色列表
     * @param id
     * @return
     */

    List<String> selectRoleKeyByUserId(Long id);
    /**
     * 查询角色列表
     * @param pageNum
     * @param pageSize
     * @param roleName
     * @param status
     * @return
     */

    ResponseResult<PageVo> listAll(Integer pageNum, Integer pageSize, String roleName, Character status);
    /**
     * 修改角色的状态
     * @param roleUpdateDto
     * @return
     */

    ResponseResult changeRoleStatus(RoleUpdateDto roleUpdateDto);
    /**
     * 需要提供新增角色的功能。新增角色时能够直接设置角色所关联的菜单权限。
     * @param roleAddDto
     * @return
     */

    ResponseResult saveRole(RoleAddDto roleAddDto);

    /**
     * 根据角色id查询角色详情
     * @param id
     * @return
     */
    ResponseResult<RoleUpdateVo> getDataById(Long id);


    /**
     * 更新用户信息
     * @param roleDto
     * @return
     */
    ResponseResult updateData(RoleDto roleDto);
    /**
     * 根据角色id删除数据
     * @param id
     * @return
     */

    ResponseResult deleteDataById(Long id);
    /**
     * 获取所有状态正常的角色列表
     * @return
     */

    ResponseResult<List<Role>> getAllRole();
}
